package com.pai4j.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
 * 群组状态枚举类
 * 用于表示群组的不同状态
 * 
 * @author PAI4J
 */
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum GroupStatusEnum {

    /**
     * 正常状态
     */
    NORMAL(1, "正常"),

    /**
     * 已解散
     */
    DISSOLVED(2, "已解散"),

    /**
     * 已冻结/禁用
     */
    FROZEN(3, "已冻结");

    /**
     * 状态码
     */
    private Integer status;

    /**
     * 状态描述
     */
    private String statusName;

    /**
     * 判断是否为正常状态
     * 
     * @param status 状态码
     * @return true-正常状态，false-非正常状态
     */
    public static boolean isNormal(Integer status) {
        return NORMAL.status.equals(status);
    }

    /**
     * 判断是否为已解散状态
     * 
     * @param status 状态码
     * @return true-已解散，false-未解散
     */
    public static boolean isDissolved(Integer status) {
        return DISSOLVED.status.equals(status);
    }

    /**
     * 判断是否为已冻结状态
     * 
     * @param status 状态码
     * @return true-已冻结，false-未冻结
     */
    public static boolean isFrozen(Integer status) {
        return FROZEN.status.equals(status);
    }

    /**
     * 根据状态码获取枚举对象
     * 
     * @param status 状态码
     * @return 对应的枚举对象，如果不存在则返回null
     */
    public static GroupStatusEnum getByStatus(Integer status) {
        if (status == null) {
            return null;
        }
        for (GroupStatusEnum statusEnum : values()) {
            if (statusEnum.status.equals(status)) {
                return statusEnum;
            }
        }
        return null;
    }

    /**
     * 根据状态码获取状态描述
     * 
     * @param status 状态码
     * @return 状态描述，如果不存在则返回null
     */
    public static String getStatusName(Integer status) {
        GroupStatusEnum statusEnum = getByStatus(status);
        return statusEnum != null ? statusEnum.statusName : null;
    }
}
